为了解决对现有嵌入式设备各操作系统文件都被破坏的情况下,嵌入式设备必定无法正常运行的问题,本发明公开了一种嵌入式设备及其启动方法,本发明方法包括:对各用于单独启动嵌入式设备的操作系统文件进行检查,操作系统文件包括内核部分和文件系统部分,若检查结果为各操作系统文件均被破坏,且能够从各操作系统文件中获取可用的内核部分和可用的文件系统部分,则启动一个可用的内核部分并将一个可用的文件系统挂载起来实现设备正常启动。正是由于通过一个可用的内核部分和一个可用的文件系统部分实现设备正常启动,从而在保证在一定条件下嵌入式设备正常运行。
1.一种嵌入式设备启动方法,其特征在于,包括:对各用于单独启动嵌入式设备的操作系统文件进行检查,生成操作系统文件状态信息,根据操作系统文件状态信息检查各操作系统文件是否均被破坏,其中,操作系统文件包括内核部分和文件系统部分,操作系统文件状态信息包括标识内核部分是否可用的第一标识信息、标识文件系统部分是否可用的第二标识信息、内核部分起始地址和文件系统部分起始地址;若检查结果为各操作系统文件均被破坏,且能够从各操作系统文件中获取可用的内核部分和可用的文件系统部分,则在引导启动过程中根据操作系统文件状态信息对操作系统文件进行检查,读取各操作系统文件内核部分起始地址和文件系统部分起始地址,并根据第一标识信息和第二标识信息对各操作系统文件内核部分和文件系统部分进行校验确定可用的内核部分和可用的文件系统部分,启动一个可用的内核部分并将一个可用的文件系统挂载起来实现设备正常启动。
2.如权利要求1所述的方法,其特征在于,在一个可用的内核部分启动的最后一步将一个可用的文件系统挂载起来,实现设备正常启动。
3.如权利要求1所述的方法,其特征在于,所述启动一个可用的内核部分并将一个可用的文件系统挂载起来具体包括:将实现设备正常启动的文件系统部分的起始地址与各内存技术设备MTD块的起始地址进行比较;将具有相同起始地址的MTD块作为可用的文件系统挂载起来。
4.一种嵌入式设备,其特征在于,包括:检测模块,用于对各用于单独启动嵌入式设备的操作系统文件进行检查,操作系统文件包括内核部分和文件系统部分,其中,所述检测模块,具体用于若检查结果为各操作系统文件均被破坏,且能够从各操作系统文件中获取可用的内核部分和可用的文件系统部分,则在引导启动过程中根据操作系统文件状态信息对操作系统文件进行检查,读取各操作系统文件内核部分起始地址和文件系统部分起始地址,并根据第一标识信息和第二标识信息对各操作系统文件内核部分和文件系统部分进行校验确定可用的内核部分和可用的文件系统部分;生成模块,用于对操作系统文件进行检查之后生成操作系统文件状态信息,根据操作系统文件状态信息检查各操作系统文件是否均被破坏,其中,操作系统文件状态信息包括标识内核部分是否可用的第一标识信息、标识文件系统部分是否可用的第二标识信息、内核部分起始地址和文件系统部分起始地址;启动模块,用于启动一个可用的内核部分并将一个可用的文件系统挂载起来实现设备正常启动。
5.如权利要求4所述的设备,其特征在于,启动模块,还用于在一个可用的内核部分启动的最后一步将一个可用的文件系统挂载起来,实现设备正常启动。
6.如权利要求4所述的设备,其特征在于,所述启动模块具体用于:将实现设备正常启动的文件系统部分的起始地址与各内存技术设备MTD块的起始地址进行比较,将具有相同起始地址的MTD块作为可用的文件系统挂载起来。
技术领域本发明涉及通信技术技术领域,特别是涉及一种嵌入式设备及其启动方法。
背景技术随着现代电子技术的高速发展,通讯设备已成为人们生活和工作中不可或缺的一部分。同时,人们对通讯设备的安全性和可靠性的要求也越来越高。系统在线升级是嵌入式系统常见的操作。如果在嵌入式系统在线升级中突然断电或者出现其它故障,会导致存储器中操作系统文件被破坏。为了满足客户对通讯产品安全性的要求,越来越多的嵌入式设备采用多个操作系统文件的方法来保证嵌入式设备在存储器某些部分被破坏的情况下仍能够正常启动运行。多个操作系统文件的方法是指在存储器上存放两个甚至更多个操作系统文件的方法,其中一个为启动时运行的操作系统文件,另外的为备份的操作系统文件,目前通用的方法是在存储器上搜索到操作系统文件后,对每个操作系统文件分别进行校验,跳过被破坏或者无效的操作系统文件,启动可以运行的正常操作系统文件。但是在某些情况下可能会存在多操作系统文件中的每个操作系统文件都被破坏的情况,即每个操作系统文件都不具备单独运行的条件。在这种条件下,嵌入式设备必定无法正常运行,只能由客户将产品退回给运营商或者是厂家,最后由厂家来维修,这个过程需要耗费一定的时间和人力成本,对用户对产品的体验度以及运营商和厂家的收益均有影响。
发明内容为了解决对现有每个操作系统文件都被破坏的情况下,嵌入式设备必定无法正常运行的问题,本发明实施例提供的一种嵌入式设备启动方法,包括:对各用于单独启动嵌入式设备的操作系统文件进行检查,生成操作系统文件状态信息,根据操作系统文件状态信息检查各操作系统文件是否均被破坏,其中,操作系统文件包括内核部分和文件系统部分,操作系统文件状态信息包括标识内核部分是否可用的第一标识信息、标识文件系统部分是否可用的第二标识信息、内核部分起始地址和文件系统部分起始地址;若检查结果为各操作系统文件均被破坏,且能够从各操作系统文件中获取可用的内核部分和可用的文件系统部分,则在引导启动过程中根据操作系统文件状态信息对操作系统文件进行检查,读取各操作系统文件内核部分起始地址和文件系统部分起始地址,并根据第一标识信息和第二标识信息对各操作系统文件内核部分和文件系统部分进行校验确定可用的内核部分和可用的文件系统部分,启动一个可用的内核部分并将一个可用的文件系统挂载起来实现设备正常启动。本发明实施例提供的一种嵌入式设备,包括:检测模块,用于对各用于单独启动嵌入式设备的操作系统文件进行检查,操作系统文件包括内核部分和文件系统部分,其中,所述检测模块,具体用于若检查结果为各操作系统文件均被破坏,且能够从各操作系统文件中获取可用的内核部分和可用的文件系统部分,则在引导启动过程中根据操作系统文件状态信息对操作系统文件进行检查,读取各操作系统文件内核部分起始地址和文件系统部分起始地址,并根据第一标识信息和第二标识信息对各操作系统文件内核部分和文件系统部分进行校验确定可用的内核部分和可用的文件系统部分;生成模块,用于对操作系统文件进行检查之后生成操作系统文件状态信息,根据操作系统文件状态信息检查各操作系统文件是否均被破坏,其中,操作系统文件状态信息包括标识内核部分是否可用的第一标识信息、标识文件系统部分是否可用的第二标识信息、内核部分起始地址和文件系统部分起始地址;启动模块,用于启动一个可用的内核部分并将一个可用的文件系统挂载起来实现设备正常启动。本发明实施例中正是由于通过一个可用的内核部分和一个可用的文件系统部分实现设备正常启动,从而在保证在一定条件下,如果操作系统文件的不同部分被破坏,仍能够将多个操作系统文件的不同部分组合成一个可用的操作系统文件,保证产品的正常运行;从用户的角度考虑,在多操作系统文件的基础上有增加了一层保险机制,一定程度上防止每个操作系统文件都被破坏的情况下产品不能正常运行的情况发生,提高了用户对产品的满意度,也能够减少设备返场维修的次数,降低成本。
附图说明图1为本发明第一实施例方法流程图;图2为本发明第二实施例嵌入式设备结构图。
具体实施方式为了解决现有现有每个操作系统文件都被破坏的情况下,嵌入式设备必定无法正常运行的问题,本发明第一实施例提供了一种嵌入式设备启动方法,嵌入式系统将操作系统文件划分为内核和文件系统这两部分,对于用于设备启动的操作系统文件,这两部分必须都是有效的。本发明实施例中提及的嵌入式设备启动方法是指在存储器上存放的2个或2个以上操作系统文件均被部分破坏的情况下,让嵌入式设备能够正常运行的方法。在运用多操作系统文件的嵌入式设备中,嵌入式设备启动的时候都涉及到对操作系统文件的搜索、选择以及校验的机制,保证用于设备启动的操作系统文件为可用的操作系统文件。在运行本实施例提供的方法之前需为各个操作系统文件提供操作系统文件状态信息的保存区域,在嵌入式设备存储介质如flash上划分出一定的空间作为操作系统文件状态信息的保存区域,并完成最初的操作系统文件状态信息的设置,操作系统文件状态信息可以以操作系统文件状态信息表的形式存储于flash上,操作系统文件状态信息包括:用于标识内核部分是否可用的第一标识信息、用于标识文件系统部分是否可用的第二标识信息、内核部分起始地址和文件系统部分起始地址。下面以第一个操作系统文件的内核被破坏、第二个操作系统文件的文件系统被破坏的双操作系统文件为例说明,本发明实施例提供的嵌入式设备启动方法如图1所示包括下列主要步骤:步骤101:嵌入式设备在boot(引导)阶段搜索整个存储器,获取每个操作系统文件的内核起始地址和文件系统起始地址,通过对搜索到的内核部分和文件系统部分校验,获取标识内核部分是否可用的第一标识信息和标识文件系统部分是否可用的第二标识信息,并将获取的上述信息写到操作系统文件状态信息表。此处内核起始地址和文件系统起始地址指位于存储器中起始地址。boot启动是从flash驱动中获取flash的扇区信息,从第0个扇区开始搜索嵌入式设备操作系统文件头特定的幻数,在不同的扇区搜索到与操作系统文件相关的特定的幻数。然后按照特定的操作系统文件头定义从操作系统文件头中读出文件的类型,判断该类型为正确的操作系统文件类型。接着对操作系统文件头进行校验,判断该操作系统文件头为正确的操作系统文件头,从操作系统文件头中读出搜索到的操作系统文件的内核的起始地址和文件系统起始地址,将这些信息保存到操作系统文件状态信息表中。最后分别对各操作系统文件内核和文件系统的内容进行校验,将每个操作系统文件的第一标识信息和第二标识信息,即校验结果也保存在状态信息表中。本实施例优选方案为先校验第一个操作系统文件的内核和文件系统,再校验第二个操作系统文件的内核和文件系统。当然也可以先校验第一个操作系统文件的内核,再校验第二个操作系统文件的内核,再校验第一个操作系统文件的文件系统,再校验第二个操作系统文件的文件系统。步骤102:根据获取的第一标识信息和第二标识信息确定第一个操作系统文件和第二个操作系统文件均无法实现设备正常启动,第一个操作系统文件中文件系统1可用,第二个操作系统文件中内核2可用。操作系统文件状态信息表中的信息包括对应第一个操作系统文件中内核1的第一标识信息、对应第一个操作系统文件中文件系统1的第二标识信息,对应第二个操作系统文件中内核2的第一标识信息、对应第二个操作系统文件中文件系统2的第二标识信息。通过分析对应内核1的第一标识信息、对应文件系统1的第二标识信息判断第一个操作系统文件是否可以单独运行,通过分析对应内核2的第一标识信息、对应文件系统2的第二标识信息判断第二个操作系统文件是否可以单独运行。如果有操作系统文件能够单独运行就记下该操作系统文件的标号,此标号用来分别获取该操作系统文件的内核和文件系统的起始地址,用来单独运行该操作系统文件。本实施例为每个操作系统文件都不具备单独运行的条件,即检查结果为各操作系统文件均被破坏,就首先从操作系统文件状态信息表中的对应内核1的第一标识信息开始检查,若检查到有第一标识信息标识内核可用,则记下该内核的标号,此标号用来获取该内核的起始地址;接着从操作系统文件状态信息中的对应文件1的第二标识信息开始检查,若检查到有第二标识信息标识文件系统可用,则记下该文件系统的标号,此标号用来获取该文件系统的起始地址。通过上述的步骤可以分别获取到内核和文件系统的起始地址。根据本实施例预设定的条件,第一个操作系统文件的内核被破坏、第二个操作系统文件的文件系统被破坏,校验第一个操作系统文件得出:第一个操作系统文件中内核不可用、文件系统可用,即第一个操作系统文件对应的第一标识信息为不可用,第二标识信息为可用,内核和文件系统不是都可用的,即第一个操作系统文件不具备单独启动的条件;校验第二个操作系统文件得出:第二个操作系统文件中内核可用、文件系统不可用,内核和文件系统不是都可用的,即第二个操作系统文件也不具备单独启动的条件。具体过程是,首先从状态信息表中读每个操作系统文件的第一标识信息,得出第二个操作系统文件的内核2可用,记下内核2的编号为2;接着从状态信息表中读每个操作系统文件的第二标识信息,得出第一个操作系统文件的文件系统1可用,记下文件系统1的编号为1。步骤103:将第一个操作系统文件中文件系统1的起始地址存放在内存的固定地址ADDR,并根据获取的第二个操作系统文件内核2的起始地址启动内核2。根据第二个操作系统文件内核2的起始地址从存储器flash上读取该内核部分并解压到内存中运行。具体过程为:启动的内核编号为2,挂载的文件系统的编号为1。首先从操作系统文件状态信息表中读出编号为2的内核的起始地址和编号为1的文件系统的起始地址。将文件系统1的起始地址保存在内存中的特定区域,以便于运行到内核阶段的时候会从该地址(内存中的特定区域)读出文件系统1的起始地址。接着按照编号为2的内核的起始地址从存储器中读出内核部分解压到内存中运行。步骤104:根据固定地址ADDR读取文件系统1的起始地址,解析文件系统1隶属的MTD(memoryxa0technologyxa0device内存技术设备)块,内核2启动的最后一步将该MTD块作为文件系统挂载起来。本步骤是实际是一个启动内核2并将文件系统1挂载起来的步骤,内核2将文件系统1的起始地址与各个MTD块的起始地址做比较,得出与文件系统1具有相同起始地址的MTD块的MTD号。内核2启动的最后一步,就会根据得到的MTD号,将该MTD块作为文件系统挂载起来,即将文件系统1挂载起来,经过上述步骤就可以将设备正常启动起来。本实施例中内核2启动的最后一步将文件系统1挂载起来替代现有技术中内核2启动的最后一步将文件系统2挂载起来。通过本发明实施例提供的方案可知,在嵌入式设备中的双操作系统文件的不同部分被破坏的情况下,例如,第一个操作系统文件的内核被破坏、第二个操作系统文件的文件系统被破坏,仍能够通过运行多个操作系统文件的不同的可用部分,保证嵌入式设备的正常运行,这样就可以在一定程度上避免,每个操作系统文件都不具备单独运行的这种条件下,嵌入式设备必定无法正常运行的问题。本发明第二实施例提供了一种嵌入式设备,如图2所示,包括:检测模块201,用于对各用于单独启动嵌入式设备的操作系统文件进行检查,操作系统文件包括内核部分和文件系统部分;启动模块202,用于若检查结果为各操作系统文件均被破坏,且能够从各操作系统文件中获取可用的内核部分和可用的文件系统部分,则启动一个可用的内核部分并将一个可用的文件系统挂载起来实现设备正常启动。进一步,启动模块202,还用于在一个可用的内核部分启动的最后一步将一个可用的文件系统挂载起来,实现设备正常启动。进一步,还包括:生成模块203,用于对操作系统文件进行检查之后生成操作系统文件状态信息,根据所述操作系统文件状态信息检查各操作系统文件均被破坏,且从各操作系统文件中获取可用的内核部分和可用的文件系统部分。进一步,检测模块201,还用于在boot启动过程中根据操作系统文件状态信息对操作系统文件进行检查,操作系统文件状态信息包括标识内核部分是否可用的第一标识信息、标识文件系统部分是否可用的第二标识信息、内核部分起始地址和文件系统部分起始地址,读取各操作系统文件内核部分起始地址和文件系统部分起始地址,并根据第一标识信息和第二标识信息对各操作系统文件内核部分和文件系统部分进行校验确定可用的内核部分和可用的文件系统部分。进一步,启动模块202,还用于将实现设备正常启动的文件系统部分的起始地址与各MTD块的起始地址进行比较,将具有相同起始地址的MTD块作为可用的文件系统挂载起来。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。